package org.dromara.system.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.system.domain.OrderSalesData;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;


/**
 * 订单销售数据信息视图对象 t_order_sales_data
 *
 * @author joker
 * @date 2025-05-05
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderSalesData.class)
public class OrderSalesDataVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 记录ID
     */
    @ExcelProperty(value = "记录ID")
    private Long id;

    /**
     * 系统单号
     */
    @ExcelProperty(value = "系统单号")
    private String systemOrderNumber;

    /**
     * 订单名称
     */
    @ExcelProperty(value = "订单名称")
    private String orderName;

    /**
     * 商户
     */
    @ExcelProperty(value = "商户")
    private String merchant;

    /**
     * 供货商名
     */
    @ExcelProperty(value = "供货商名")
    private String supplierName;

    /**
     * 产品编码
     */
    @ExcelProperty(value = "产品编码")
    private String productCode;

    /**
     * 商品编码
     */
    @ExcelProperty(value = "商品编码")
    private String commodityCode;

    /**
     * 订单状态（待发货、待修改、审核中、已发货、已激活、已拦截、已失败、已首冲）
     */
    @ExcelProperty(value = "订单状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_order_status")
    private String orderStatus;

    /**
     * 订单状态描述
     */
    @ExcelProperty(value = "状态描述")
    private String statusDescription;

    /**
     * 订单来源（H5落地页、表格导入、拼多多）
     */
    @ExcelProperty(value = "订单来源", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_order_source")
    private String orderSource;

    /**
     * 身份证名
     */
    @ExcelProperty(value = "身份证名")
    private String idCardName;

    /**
     * 身份证号
     */
    @ExcelProperty(value = "身份证号")
    private String idCardNumber;

    /**
     * 收件人
     */
    @ExcelProperty(value = "收件人")
    private String recipient;

    /**
     * 联系电话
     */
    @ExcelProperty(value = "联系电话")
    private String contactPhoneNumber;

    /**
     * 收件地址所在的省份
     */
    @ExcelProperty(value = "收件地址所在的省份")
    private String province;

    /**
     * 收件地址所在的城市
     */
    @ExcelProperty(value = "收件地址所在的城市")
    private String city;

    /**
     * 收件地址所在的区/县
     */
    @ExcelProperty(value = "收件地址所在的区/县")
    private String districtCounty;

    /**
     * 收件地址
     */
    @ExcelProperty(value = "收件地址")
    private String shippingAddress;

    /**
     * 店铺名称
     */
    @ExcelProperty(value = "店铺名称")
    private String storeName;

    /**
     * 外部单号
     */
    @ExcelProperty(value = "外部单号")
    private String externalOrderNumber;

    /**
     * 扩展单号
     */
    @ExcelProperty(value = "扩展单号")
    private String extendedOrderNumber;

    /**
     * 转单标记
     */
    @ExcelProperty(value = "转单标记")
    private String transferOrderMark;

    /**
     * 转单时间
     */
    @ExcelProperty(value = "转单时间")
    private Date transferOrderTime;

    /**
     * 物流单号
     */
    @ExcelProperty(value = "物流单号")
    private String logisticsOrderNumber;

    /**
     * 物流名称
     */
    @ExcelProperty(value = "物流名称")
    private String logisticsName;

    /**
     * 激活号码
     */
    @ExcelProperty(value = "激活号码")
    private String activationNumber;

    /**
     * 发货时间
     */
    @ExcelProperty(value = "发货时间")
    private Date shippingTime;

    /**
     * 激活时间
     */
    @ExcelProperty(value = "激活时间")
    private Date activationTime;

    /**
     * 首冲时间
     */
    @ExcelProperty(value = "首冲时间")
    private Date firstRechargeTime;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date creationTime;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remarks;

    /**
     * 最后更新时间
     */
    @ExcelProperty(value = "最后更新时间")
    private Date lastUpdateTime;

    /**
     * 结佣状态
     */
    @ExcelProperty(value = "结佣状态")
    private String commissionSettlementStatus;

    /**
     * 结佣金额
     */
    @ExcelProperty(value = "结佣金额")
    private Long commissionSettlementAmount;

    /**
     * 顶级供货商名称
     */
    @ExcelProperty(value = "顶级供货商名称")
    private String topLevelSupplierName;

    /**
     * 主播达人ID
     */
    @ExcelProperty(value = "主播达人ID")
    private String liveStreamerId;

    /**
     * 主播名称
     */
    @ExcelProperty(value = "主播名称")
    private String liveStreamerName;

    /**
     * 商品类型
     */
    @ExcelProperty(value = "商品类型")
    private String commodityType;

    /**
     * 开卡号码归属地
     */
    @ExcelProperty(value = "开卡号码归属地")
    private String cardOpeningNumberPlaceOfOrigin;


}
